<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 1 去重
        //   放入新数组
        //   
        // for(var i in arr) {
        //     // 判断新数组中中否存在这个值  indexOf   includes
        //     if(newArr.indexOf(arr[i]) === -1){就push}
        // }

        //   删除重复的
        // for(var i in arr) {   // 把每一个值都拿出来
        //     for(var j = i + 1...) {
        //         // 相等  (arr[i] === arr[j])   splice(j)   bug: 数组塌陷 j--
        //     }
        // }


        // 2 统计
        //   先去重，后统计
        //      把新数组中的每一个值拿出来与原数组进行比较
            //   外层  遍历新数组
            //     var count=0
            //       内层循环  遍历原数组

        //   把重复的删除(把后面重复的删除)
        //       外层循环遍历原数组
        //           var count=1    自己也出现了一次
        //          内层  j=i+1  


        // 插入值   ---  注意死循环    注意加break

        // concat(arr , v1 , v2 , v3)


        // function concat() {
        //     var arr = arguments[0] ;

        //     // 返回新的数组
        //     var newArr = [] ;
        //     // 把原数组的值深复制到新数组
        //     newArr = arr.slice() ;

        //     for(var i = 1 ; i < arguments.length ; i++) {
        //         if(arguments[i] instanceof Array) {
        //             for(var j = 0 ; j < arguments[i].length ; j++) {
        //                 newArr.push(arguments[i][j])
        //             }
        //         } else {
        //             newArr.push(arguments[i])
        //         }
        //     }
        // }


        // 基本数据类型   栈内存中    变量存储的就是值
        // 引用数据类型   堆内存中    变量存储的只是地址

        var a = 1 ;
        var b = a ;
        a++ ;
        console.log(b);   // 1


        var arr1 = [1,2,3] ;
        var arr2 = arr1 ;
        arr1.push('a') ;
        console.log(arr2);   // [1,2,3,'a']


        // 函数的值传递和引用传递

        var c = 2 ;
        function f1(n) {
            n++ ;
        }

        f1(c) ;
        console.log(c);


        var arr3 = [1,2,3] ;

        function f2(arr) {
            arr.pop()
        }

        f2(arr3)
        console.log(arr3);





        // 数组的深拷贝和浅拷贝
        // 浅拷贝   拷贝的是地址
        // 深拷贝   拷贝值
        //    slice()
        //    concat()
        //    遍历 然后Push到新数组



        // innerHTML / innerText

  
    </script>
    
</body>
</html>